package main

import (
	"flag"
	"fmt"
	"os/exec"

	"gopkg.in/goyy/goyy.v0/comm/cron"
	"gopkg.in/goyy/goyy.v0/util/times"
)

var crn = cron.New()
var sFileName = "JSFZ_BANK_%s"

func main() {
	var c = make(chan bool, 1)
	cron := flag.String("cron", "-1", "cron")
	dir := flag.String("dir", "-1", "cron")
	errExit := flag.Bool("errExit", false, "error is exit")
	flag.Parse()
	if *cron == "-1" {
		fmt.Println("请输入任务执行时间表达式")
		return
	}
	if *dir == "-1" {
		fmt.Println("请输入文件目录")
		return
	}
	date := times.Format("20060102", times.Now())
	fileName := fmt.Sprintf(sFileName, date)
	filePath := fmt.Sprint(*dir, "/", fileName)
	fmt.Println("文件目录：", filePath, "，任务执行时间：", *cron)
	err := crn.AddFunc(*cron, func() {
		fmt.Println("*****************************************************************************")
		fmt.Println("任务开始执行", times.Format("2006年01月02日 15时04分05秒", times.Now()))
		fmt.Println("开始解压数据，文件名：", fileName, times.NowUnixStr())
		/*
			uncompress -F JSFZ_BANK_2017.txt.tar.Z
			tar xf JSFZ_BANK_2017.txt.tar
		*/
		uncmd := exec.Command("uncompress", "-F", fmt.Sprint(fileName, ".txt.tar.Z"))
		unb, unerr := uncmd.Output()
		if unerr != nil {
			fmt.Println("执行 uncompress -F 命令异常，", unerr.Error())
			if *errExit {
				c <- true
			}
		}
		fmt.Println(string(unb))

		tarcmd := exec.Command("tar", "xf", fmt.Sprint(fileName, ".txt.tar"))
		tarb, tarerr := tarcmd.Output()
		if tarerr != nil {
			fmt.Println("执行 tar xf 命令异常，", tarerr.Error())
			if *errExit {
				c <- true
			}
		}
		fmt.Println(string(tarb))

		javacmd := exec.Command("java", "-jar", "writeDB.jar", fmt.Sprint(filePath, ".txt"), "mygo")
		javab, javaerr := javacmd.Output()
		if javaerr != nil {
			fmt.Println("执行 java -jar writeDB.jar 命令异常，", javaerr.Error())
			if *errExit {
				c <- true
			}
		}
		fmt.Println(string(javab))
		fmt.Println("任务结束执行", times.Format("2006年01月02日 15时04分05秒", times.Now()))
		fmt.Println("*****************************************************************************")
	})
	if err != nil {
		fmt.Println(err.Error())
		c <- true
		return
	}
	crn.Start()
	<-c
	go func() {

	}()
}
